Identifying ideal team composition and structure has bearing on efficiency and effectiveness of software project and any other type of projects that involves a group of people undertaking an activity. While this problem is challenging in general it becomes even worse in a context whereby agile methodologies are applied. In agile software development, requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. Agile methodologies demand a considerable amount of collaboration and are designed to embrace change. This change might bring about different requirements which demand changes in team composition and structure. The optimality of a team composition and structure is determined by a myriad of factors including: skill levels of individuals, experiences of team members working together, personalities, code styles and life styles (specifically in geographically dispersed teams). The current methodologies or approaches rely primarily on the judgment of team leads and project managers during the setup phase and on measurements of past performance and while adapting workload as the project progresses. Those approaches fail to account for all relevant factors, leading to sub-optimal team composition and inefficiencies in project outcomes.